/**
 * @Description  headers模式：
 * 首部交换机和扇形交换机都不需要路由键routingKey,交换机时通过Headers头部来将消息映射到队列的，有点像HTTP的Headers，Hash结构中要求携带一个键“x-match”，这个键的Value可以是any或者all，这代表消息携带的Hash是需要全部匹配(all)，还是仅匹配一个键(any)就可以了。相比直连交换机，首部交换机的优势是匹配的规则不被限定为字符串(string)而是Object类型。
 *
 * any: 只要在发布消息时携带的有一对键值对headers满足队列定义的多个参数arguments的其中一个就能匹配上，注意这里是键值对的完全匹配，只匹配到键了，值却不一样是不行的；
 *
 * all：在发布消息时携带的所有Entry必须和绑定在队列上的所有Entry完全匹配

 *
 * 直连接和首部类型的比较
 * 绑定规则不同：直连接是一个简单的String；而首部是键值对Entry，而且键值对的value可以是任意类型Object
 *
 * 绑定个数不同：直连接一次只能绑定一个字符串，如果想绑定多个字符串就需要绑定多次或者循环调用queueBind()方法来绑定多次；而首部类型直接可以往Map中添加多个实体Entry即可
 *
 * 映射规则不同：直连接只需要比较路由键是否相等即可，而首部类型除了比较value还要比较key，因为首部类型是Entry类型，需要同时比较key和value，而且首部类型还可以通过x-match来控制匹配的条件，all：需要匹配所有Entry，相当于SQL中的 and操作，any：只需要匹配上一个Entry即可，相当于SQL中的or操作
 *
 * 直连接适用于计较简单的路由，而首部类型相比直连接匹配规则更强大
 *
 * @author gjx
 * @date 2019/7/4 13:40
 * @version v1.0
 */
package cn.gjxblog.mq.pattern.headers;